這是「盯!視覺追蹤機器人」系列的第一篇。作為本系列的第一篇,想先簡單記錄這個專題為什麼開始、想研究什麼,以及接下來預計實作的方向。
目前專題還在相當初期的階段,因此這裡不會是一個已經完成的專案教學,而比較像是一份持續更新的學習筆記。除了記錄最後做出了什麼,我也希望把過程中遇到的問題、查過的資料、嘗試過的方法,以及自己對問題的理解留下來!
因為這次的畢業專題,我對機器人產生興趣,因此我想嘗試做一個和機器人視覺追蹤有關的題目。以前學習程式設計時,大多是讓程式在電腦裡執行,但機器人不太一樣。除了程式之外,還會牽涉到相機、感測器、控制,以及機器人實際的移動,這些看不見的虛擬數字,變成能移動的實體機器人,讓我覺得很有趣。
我也想藉由這個專題,慢慢熟悉 ROS2、機器人控制與電腦視覺,並把實際操作時遇到的問題記錄下來,也當作我的一個學習歷程。
目前想做的方向,是讓機器人透過相機取得畫面,透過攝影機辨識並追蹤指定的目標,再根據目標在畫面中的位置控制機器人的移動。啟發是對於攝影機位的運鏡產生好奇,想研究拍攝手法。
最基本的概念可以先簡化成:
取得影像 → 找到目標 → 判斷目標位置 → 控制機器人
例如目標出現在畫面右側時,機器人可以調整方向,使攝影機重新朝向目標;當目標開始移動時,機器人也能嘗試跟著調整位置。而我最後比較感興趣的方向,是讓機器人不只是單純「追著某個東西跑」,而是更接近一台可以自己移動的攝影機。當拍攝目標移動時,機器人能夠跟著改變位置,同時盡可能讓目標維持在適當的畫面位置,形成類似跟拍或運鏡的效果。
不過目前距離這個目標還有一段距離,所以現階段會先從最基本的視覺追蹤開始學習。
目前主要使用的環境包含 ROS2、TurtleBot3 與 Gazebo,先透過模擬環境來測試機器人的移動與攝影機影像。
接下來預計先從幾個比較基礎的問題開始:
之後如果基礎追蹤逐漸穩定,也會再嘗試其他目標辨識方式、距離資訊、導航與避障等功能。